/*
 * Copyright (c) 2017. 杭州端点网络科技有限公司.  All rights reserved.
 */

package com.jiantong.user.service;

import com.google.common.base.Optional;
import com.jiantong.user.ext.UserDepartment;
import com.jiantong.user.model.DepartmentUser;
import io.terminus.common.model.Response;

import java.util.List;
import java.util.Map;

/**
 * @author : panxin
 */
public interface DepartmentUserReadService {

    /**
     * 根据用户ID查询关联的部门信息
     *
     * @param userId 用户ID
     * @return 关联信息
     */
    Response<DepartmentUser> findDepartmentUserByUserId(Long userId);

    /**
     * 根据用户ID查询关联的部门信息
     *
     * @param userId 用户ID
     * @return 关联信息
     */
    Response<Optional<DepartmentUser>> findOptionalDepartmentUserByUserId(Long userId);

    /**
     * 根据用户ID查询关联的所有部门的信息
     * @param userId 用户ID
     * @return 关联信息列表
     */
    Response<List<UserDepartment>> findDepartmentUsersByUserId(Long userId);

    /**
     * 条件查询user_id
     * @param criteria
     * @return
     */
    Response<List<Long>> selectUserIds(Map criteria);

    /**
     * 条件查询
     * @param criteria
     * @return
     */
    Response<List<DepartmentUser>> selectList(Map criteria);
}
